package com.xyht.sca_s.student_manage_system.modules.workApplication.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xyht.sca_s.student_manage_system.common.commonReturn.ResponseResult;
import com.xyht.sca_s.student_manage_system.modules.workApplication.entity.SmsWorkApplication;
import com.xyht.sca_s.student_manage_system.modules.workApplication.entity.vo.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.concurrent.Future;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author XYHT
 * @since 2023-05-17
 */
public interface SmsWorkApplicationService extends IService<SmsWorkApplication> {

    ResponseResult smsWorkApplicationAdd(SmsWorkApplicationVO smsWorkApplicationVO, String user_id);

    ResponseResult smsWorkApplicationUpdate(SmsWorkApplicationVO smsWorkApplicationVO, String user_id);

    ResponseResult smsWorkApplicationCancel(SmsWorkApplicationCancelVO smsWorkApplicationCancelVO, String user_id);

    ResponseResult allowSmsWorkApplication(SmsWorkApplicationAllowVO allowVO, String user_id);

    ResponseResult getSmsWorkApplicationList(String search_str,Integer allowStatus,String user_id, Integer application_type, Integer pageNum, Integer pageSize);

    ResponseResult getSmsWorkApplicationDetail(String application_id, String user_id);

    ResponseResult getSmsWorkApplicationOriginSettingProcess();

    ResponseResult upLoadFile(MultipartFile file);

    ResponseResult downloadFileManagement(String id, HttpServletResponse response);

    ResponseResult selectAgent(String person_name);

    Future<ResponseResult> tableDownload(String apply_id, HttpServletResponse response);

    ResponseResult selectAllApply(String apply_unit, Integer pageSize, Integer pageNum,Integer status);

    Future<ResponseResult> exportWorkApplication(SmsWorkApplicationExportVO exportVO, HttpServletResponse response);

    ResponseResult forcedFinishWorkGroupApplication(String applyId,String userId);

    ResponseResult forcedTorsionWorkGroupApplication(SmsWorkApplicationDetailTorsionVO torsionVO);

    ResponseResult replaceApplyWorkGroupApplication(String userId, SmsWorkApplicationAllowVO allowVO);

    ResponseResult forcedRejectWorkGroupApplication(SmsWorkApplicationForceVO forceVO, String userId);

    ResponseResult deletedWorkApplication(String applyId);


    ResponseResult updateOpinion(SmsWorkApplicationUpdateOpinionVo updateOpinionVo,String userId);

    ResponseResult updateAnnex(SmsWorkApplicationUpdateAnnexVo updateAnnexVo, String userId);
}
